#include <stdio.h>
#include <stdlib.h>

#define DataSize 10

/***
 * 1. 已知长度为n的线性表, 设计算法将线性表转化 
 * a1a2a3...an-1an -> a1ana2an-1...
 *      写出线性表结构体
 *      写出算法
 * */

// 线性表结构体
// 自定义类型 可替换 这样线性表就能接受任意类型
typedef int DataType;

struct SeqList
{
    DataType *data;
    int length;
};

// 转化算法
SeqList transform(SeqList &S) {
    // 转换后的线性表
    SeqList Res;
    Res.data = (int *)malloc(DataSize * sizeof(DataType));
    Res.length = 0;
    int i = 0, j = S.length - 1;
    for (int m = 0; i <= j; m+= 2, i++, j--)
    {
        if (i == j) {
            Res.data[m] = S.data[i];
            Res.length += 1;
            break;
        }
        Res.data[m] = S.data[i];
        Res.data[m+1] = S.data[j];
        Res.length += 2;
    }
    
    return Res;
}


int main() {
    SeqList S;
    int data[DataSize] = {1,2,3,4,5,6,7};
    S.data = data;
    S.length = 7;

    for(int i = 0; i < S.length; i++) {
        printf("%d ",S.data[i]);
    }
    printf("\n");

    SeqList S2 = transform(S);
    printf("====>%d\n",S2.length);

    for(int i = 0; i < S2.length; i++) {
        printf("%d ",S2.data[i]);
    }

    return 0;
}